package com.middleware.connect;

import com.middleware.loaders.AppPropertiesLoader;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class DbConnection {
    private static final HikariDataSource dataSource;

    static {
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl(AppPropertiesLoader.getProperty("orm.jdbc.url"));
        config.setUsername(AppPropertiesLoader.getProperty("orm.jdbc.username"));
        config.setPassword(AppPropertiesLoader.getProperty("orm.jdbc.password"));
        config.setDriverClassName(AppPropertiesLoader.getProperty("orm.jdbc.driverClassName"));

        // 优化配置（根据你的服务器调整）
        config.setMaximumPoolSize(10); // 最大连接数
        config.setMinimumIdle(5);      // 最小空闲连接数
        config.setIdleTimeout(600000); // 连接最大空闲时间（ms）
        config.setConnectionTimeout(30000); // 获取连接的超时时间
        config.setMaxLifetime(1800000);     // 连接的最大生命周期

        dataSource = new HikariDataSource(config);
    }

    public static DataSource getDataSource() {
        return dataSource;
    }

    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

    //程序退出销毁连接池
    public static void close() {
        dataSource.close();
    }
}
